package test04.sync.test02.c;

/**
 * 表达的是多个售票窗口出售公共的 50 张票 - 符合现实 - 多个线程操作公共相同的资源
 *
 * 注意：当多个线程操作（写）相同资源时，很有可能出现线程安全问题
 *
 * 解决：线程同步 - 把公共资源加锁
 *
 * 有可能发生线程安全的代码，我们称之为 临界区
 * 可能发生线程安全的代码主要体现在多个线程操作(读、写)相同的资源
 *
 * 注意:锁对象必须保证唯一性,保证各个线程的锁对象是一样的
 * 保证锁的唯一性有以下四个方法：字符串常量、静态变量、Class对象、this
 *  方法一：private  String lock = "lock";
 *  方法二：private final static Object lock = new Object();
 *  方法三：类名.class
 *  方法四：this - 小心，确保this唯一
 *

 * @Author zqx
 * @Date 2024-03-21
 */
public class MainTest {
    public static void main(String[] args) {
        // PiaoRunnable01 piao = new PiaoRunnable01() ;
        PiaoRunnable02 piao = new PiaoRunnable02() ;

        Thread t1 = new Thread(piao,"售票窗口一");
        Thread t2 = new Thread(piao,"售票窗口二");
        Thread t3 = new Thread(piao,"售票窗口三");

        t1.start();
        t2.start();
        t3.start();
    }
}
